// /**
//  * 演示线程等待
//  */

// #include<iostream>
// #include<unistd.h>
// #include<pthread.h>

// using namespace std;

// void* run(void* arg){
//     int num = *(int*)arg;
//     cout<<"子线程正在运行，参数："<<num<<endl;
//     pthread_exit((void*)num);//终止线程
// }

// int main()
// {
//     pthread_t pth;
//     int arg = 42;
//     void* retval;

//     if(pthread_create(&pth,nullptr,run,&arg)!=0){
//         perror("线程创建失败");
//         exit(1);
//     }

//     //等待线程
//     if(pthread_join(pth,&retval)!=0){
//         perror("线程等待失败！");
//         exit(1);
//     }
//     cout<<*(int*)retval<<endl;
// }

#include <iostream>
#include <unistd.h>
#include <pthread.h>

using namespace std;

void* run(void* arg) {
    int num = *(int*)arg; // 获取传入的参数
    cout << "子线程正在运行，参数：" << num << endl;
    pthread_exit((void*)(intptr_t)num); // 将 int 转换为 void*
}

int main() {
    pthread_t pth;
    int arg = 42;
    void* retval;

    // 创建线程
    if (pthread_create(&pth, nullptr, run, &arg) != 0) {
        perror("线程创建失败");
        exit(1);
    }

    // 等待线程结束，并获取返回值
    if (pthread_join(pth, &retval) != 0) {
        perror("线程等待失败！");
        exit(1);
    }

    // 将 void* 转换回 int
    int result = (intptr_t)retval;
    cout << "子线程返回值：" << result << endl;

    return 0;
}